import axios from 'axios'
// 导入store实例
import store from '@/store/index.js'
// 创建一个axios实例
const instance = axios.create({
  // 基地址
  baseURL: 'http://toutiao.itheima.net',
  // 请求超时
  timeout: 5000
})
// 请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 统一携带token给后台
    const { token } = store.state.user
    // 如果token有值，则通过请求头的 Authorization 字段传递给后台
    if (token) {
      config.headers.Authorization = `Bear ${token}`
    }
    // 必须返回config
    return config
  },
  function (error) {
    // 对请求错误进行操作
    return Promise.reject(error)
  }
)
// 响应拦截器
// 服务器在把数据给接口之前必须经过这一道关卡
// 可以在响应拦截器中对响应做公共处理
instance.interceptors.response.use(function (response) {
  // 成功的回调会走到这一步，当http状态码以2或3开始都会走到这里
  // 响应成功了，把data数据返回给接口函数调用的地方
  // 这样接口函数拿到数据就可以少写一层data，这个操作可以剥离响应无效数据
  return response.data
}, function (error) {
  // 回调失败，当http状态码以4或5开始都会走到这里
  // 对响应错误做点什么
  return Promise.reject(error)
})

// 导出实例
export default instance
